昨天介紹到深度學習已經發展一段時間了,因此我們一定要依靠巨人們的肩膀,深度學習會使用到很多數學的概念,例如偏微分、矩陣運算、統計學、機率論等等,透過框架可以很簡單的實現這些技術,就像是廚師不會自己打造鍋子和湯匙,而是使用現有的工具來做飯,目前深度學習已經有許多框架如下:
Pytorch: Facebook 在 2017 開源的框架,是個語法簡潔、好上手的框架。
Tensorflow1/2: TF1代是深度學習最紅的時機點推出的,因此很多業界都使用此版本,TF2導入動態圖,比較好學習,但是1代和2代很多不相容的點很容易讓人採坑。(Keras已經併入TF)
JAX: 之前閱讀很多Google Research的文章都是使用此種架構,主要原因是其對於Google自家的TPU相容性較高。
下圖使用google trends 可以發現Pytorch的討論度在2021年有超越TF的趨勢:
還有很多本文沒有提到的,可以把框架想成一種工具,蓋一間好的房子更多取決於你的技術不是工具的廠牌,先開始學習未來再根據領域去轉換也不遲。本系列文章會以Pytroch為範例(因為筆者對Pytorch比較熟XD)。
昨天文章有提及運算能力是深度崛起的原因,因為深度學習可平行運算的原因使得GPU的平行運算可以提升訓練速度,NVIDIA為了讓開發者更方便而開發了類似C語言的CUDA語言,如果你的電腦有GPU的可以依照型號安裝CUDA toolkit。
主要透過Python來使用Pytorch,若是還沒安裝的可以參考安裝教學,進入Pytroch 網站後點選下載的版本,點選你使用的作業系統、安裝的方式、程式語言和運作的硬體產生commend(此文以CPU為範例),接著打開terminal貼上即可。
開啟terminal,並輸入以下指令進入交互介面:
python
測試以下程式碼:
import torch # 此行會將pytorch套件引入
x = torch.rand(5, 3) # 使用 pytorch 生成5*3的矩陣並隨機給值
print(x) # 在螢幕上秀出矩陣
如果輸出以下畫面表示成功了!
深度學習開發人員通常都會使用GPU來訓練模型,考量到追蹤本課程的人可能是嘗試或是電腦沒有GPU配備,因此對於如何使用CUDA沒有深入探討,若是慢慢對於此領域有興趣的非常建議入手有GPU的電腦來提升效率。
深度學習工程師需要GPU就像畫家需要畫筆一樣~XD